抛弃bash,拥抱zsh!
点击蓝字关注我
shell是我们使用Linux过程中经常接触到的工具,也是用户与Linux系统之间的桥梁。目前有很多shell工具,例如,bash、sh等。这些能够满足我们日常工作的大多数常见,但是在效率和易用性方面却捉襟见肘,本文就介绍两款bash的有力竞争者--zsh和fish。
—▼—
在使用Linux和unix过程中,大部分时间都在和命令行打交道。编辑文件、配置环境、切换目录、版本控制等等,都是在命令行下完成。因此,一个好的shell工具是至关重要的,它直接关乎着我们在开发过程中的使用体验和效率。
> cat /etc/shells
/bin/sh
/bin/bash
......
可以查看一下查看一下Linux系统默认自带的有sh
和bash
等shell工具,它们都已经足够强大,支持丰富的语法和函数定义,能够覆盖我们常见的操作,但是,bash
算得上一款中规中矩的shell工具,没有什么缺陷,但是也谈不上优秀,在很多方面考虑的还不够周到,例如,自动补全、语法、高亮显示、提示符等。
为了能够让它提升我们开发过程中的效率和便捷性,需要进行各种各样的配置,例如,在使用git版本控制时,我需要知道当前处于哪个分支?内容是否有修改?默认的提示符是无法显示的,我们就需要配置bash使得它能够满足我们的需求,这对于不熟悉Linux或者懒得去配置的同学显然是不够友好的。
得益于强大的开源社区,一些大牛在原来bash的基础上开发了一些优秀的bash替代者,例如,elvish、ksh93、nushell、osh,它们能够有效的解决了在使用shell过程中的弊端和不足之处,提升了开发过程中的体验。当然,这些替代者也各有侧重点,给人的体验也存在差异,本文我就介绍2款我个人使用过,且认为相对较好的shell工具。
102kStar、250+插件、125+主题、1450+贡献者……从这一系列的数字中就可以体现出这款shell工具的生态有多么完善,也足以体现它有多么强大。
就像它的口号那样,“Your terminal never felt this good before.”,的确,当使用这款命令行工具之后,我就开始一发不可收拾,一直使用到现在。
这里需要说明的是,oh-my-zsh和zsh并不是等价的。zsh(z shell)是一款可用作交互式登录的shell及脚本编写的命令解释器。Zsh对Bourne shell做出了大量改进,同时加入了Bash、ksh及tcsh的某些功能。而oh-my-zsh是一款开源、社区驱动的zsh管理、配置工具。目前macos及部分Linux已经预装zsh,所以这里主要介绍它的管理工具oh-my-zsh,如果没有你所使用的系统没有安装zsh,可以通过下方命令安装,
# Ubuntu
> sudo apt-get install zsh
# RedHat
> sudo yum install zsh
当安装oh-my-zsh之后,就可以轻松体验到强大的插件和精美的主题,能够瞬间让你的终端能够焕发生机。
如果使用oh-my-zsh仅仅是让它看上去美观了,我认为这显然是没有必要去使用的,至少对于我来说是这样的,我不会因为某款工具好看而去经过一系列配置。
通过安装配置,oh-my-zsh能够有效的提高生产力,就如同前言里提到的那样,有一些优质的主题能够清晰的展示开发过程中所需要的信息,让我们对当前项目所处状态一目了然,能够避免很多不必要的操作和失误,例如,我个人在使用的主题bira,它就能够展现当前所处目录、分支、修改状态,对于团队开发非常有效。
说了这么多,下面就介绍一下怎么配置和使用。
安装配置
可以通过两种方式安装配置oh-my-zsh,分别是curl和wget。
curl
> sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
wget
> sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
安装之后用户根目录下会出现一个~/.zshrc的配置文件,在这里可以配置zsh的启动脚本和主题,默认的启动脚本路径为,
~/.oh-my-zsh/oh-my-zsh.sh
按照之后在命令行下输入zsh即可进入。
配置主题
在配置文件里还可以配置主题,这也是我经常用到的,可以找到ZSH_THEME字段修改后面的主题名称进行修改,
ZSH_THEME="bira"
关于主题,可以查看下方链接,然后选择自己喜欢的主题,
https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
我个人比较推荐3款主题,一个是前面提到的bira,另一个就是ys,
也可以选择agnoster,
配置插件
我们也可以在~/.zshrc中配置插件,找到plugins字段,在后面括号中添加插件的名称即可,例如,
plugins=(rails git ruby)
有一些插件自带,有一些需要按照,zshrc支持插件列表和对应插件的介绍可以查看下面网页,
https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins
在使用zsh之前,我用过很长一段时间fish作为主要的shell工具。就像fish的名字(the friendly interactive shell)一样,它也是一款非常友好、强大的命令行工具。
我之所以被on-my-zsh吸引,是因为它能够很容易配置丰富的主题和插件。虽然目前已经从fish切换到zsh,但是不得不说,fish也有很多让人称赞且依赖的优点,下面就来介绍一下它的优点。
自动建议和自动补全
VGA色彩显示
fish支持24位彩色显示,这在当前终端技术中属于比较先进的,而且,它能够利用不同颜色来指示当前输入的内容是否正确。
如果当前输入的不正确或者不完整,那么它会显示红色,如果输入完整且正确,则会显示蓝色。
脚本语法简单
使用bash过程中,最令人反感的就是它晦涩的脚本语法。当希望写一个自动化shell脚本时,它的语法和我们常见的编程语言相去甚远,而fish支持的脚本语法非常简单,和我们所见的很多脚本语言类似,例如,查看当前目录下Python文件(以py结尾)并输出,
bash语法
for line in *.py
do
echo $line
done
fish语法
for line in *.py
echo $line
end
从上面简单示例的对比就可以很明显的看出,fish的脚本语法更加简单且一致。
友好的帮助文档
其他shell都需要预先经过配置才能完成帮助文档的自动补全,但只有fish通过解析已安装的手册页自动生成它们。另外,fish有更加强大的帮助文档阅读方式,在命令行输入help命令就尅在web浏览器打开帮助手册,然后可以针对性的查看自己需要的内容。
实用的默认配置
这也是我认为fish相对于zsh的最大优势,它不需要开发者进行过多的配置,它已经进行了很多友好的默认配置,因此,可以说是开箱即用。
安装配置
前面介绍了fish的优势,下面就介绍一下如何安装配置。
Ubuntu下安装fish,
> sudo apt-get install fish
Mac下安装fish,
> brew install fish
安装之后输入fish即可。
fish配置可以通过两种方式,
web浏览器
config.fish
我推荐使用web浏览器进行配置,在命令行下输入fish_config命令就会在浏览器打开一个配置页,可以配置颜色、函数,也可以查看历史命令等,非常直观。
zsh和fish都是shell工具中的佼佼者,二者各有优势,每个人可以根据自己的偏重和需求进行选择。如果喜欢开箱即用,我建议可以尝试fish。如果喜欢个性化,喜欢自己折腾配置,可以使用zsh,可以根据自己的需求配置各种不同的插件、主题。
▲
END
长按扫码可关注
往期精彩回顾
PyHubWeekly | 第二期:GitHub上优质的Python项目